perm filename SPRINT.FAI[COL,LCS] blob sn#414570 filedate 1979-01-31 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE SPRINT 
C00008 ENDMK
C⊗;
	TITLE SPRINT 
	INTERNAL FORNAM,RNDINT,RAND,PARAM
	EXTERNAL .COMM.,C,P,PL,FILES.	    ;WRITING ON DSK (DEV.1 ONLY!)

;FORTRAN CALLABLE RANDOM NUMBER GENERATOR
;
;USE    CALL RNDINT   TO INITIALIZE THE GENERATOR
;                     (THE GENERATOR IS LOADED INITIALIZED)
;USE    RAND(XL,XH)   AS A FUNCTION TO RETURN THE NEXT 
;                     RANDOM NUMBER BETWEEN XL AND XH
;                     (XL,XH ARE FLOATING POINT,RAND RETURNS
;		      FLOATING POINT)
;
RNDINT:	0
	MOVE 0,[756132257563]
	MOVEM 0,R1
	ADDI 0,2
	MOVEM 0,R2
	JRA 16,0(16)
R1:	756132257563
R2:	756132257565

RAND:	0
	MOVEM 1,TEMP
	MOVE 0,@0(16)
	MOVE 1,@1(16)
	FSBR 1,0
	MOVEM 0,LLIM#
	MOVE 0,R1
	ADD 0,R2
	EXCH 0,R2
	MOVEM 0,R1
	LSH 0,-11
	FSC 0,200
	FMP 0,1
	FAD 0,LLIM
	MOVE 1,TEMP
	JRA 16,2(16)
TEMP:	0

;A←1
;B←2
;CC←3
;D←4
;PP←17

FORNAM:	0			;CALL FORNAM(NAME,EXT)
;CHANGES NAMES TO SIXBIT        THIS IS TO PUT EXTENSIONS OTHER
	MOVE 0,@0(16)		;THAN .DAT ON OUTPUT
	MOVEM 0,FN#
	MOVE 1,[POINT 7,FN]
INTF3:	MOVE 2,[POINT 6,NAM]
	SETZM NAM
	MOVEI 3,5
INTF1:	ILDB 0,1
	CAIN 0," "
	JRST INTF2
	SUBI 0,40
	IDPB 0,2
	SOJG 3,INTF1
INTF2:	MOVE 0,@1(16)
	MOVEM 0,EX#
	MOVE 1,[POINT 7,EX]
EXTF3:	MOVE 2,[POINT 6,EXT]
	SETZM EXT
	MOVEI 3,5
EXTF1:	ILDB 0,1
	CAIN 0," "
	JRST EXTF2
	SUBI 0,40
	IDPB 0,2
	SOJG 3,EXTF1
EXTF2:	MOVE 0,NAM#
	MOVEM 0,FILES.
	MOVE 0,EXT#
	MOVEM 0,FILES.+1
	JRA 16,2(16)

;C	FUNCTION PARAM(X,K)
;C	COMMON J,L  /P/P(1) /PL/PL(1) /C/T,NWZZ,IT3,T6,NW,TDUR,A,
;C	1 T2,T4,BY,KODE,NPAR,LP,TBG,AC,NPA,BX,IDF,PM,NM,PAR,PX2
PARAM:	0	;C	K=0
	SETZ  2,
; IF K IS NOT ZERO UPON RETURN, THEN WE'VE FOUND INFO IN OTHER PARAM.
	MOVE 0,@(16)	;C	PARAM=X
	CAMG 0,[-9999.0] ;CC	IF(X.GT.-9999.0)RETURN
	CAMG 0,[-10000.0]  ;CC	IF(X.LE.-10000.0)RETURN
	JRST PAR2   	;GO TO PAR2
	MOVN  2,0
	FADR 2,[-9999.0]  ;CC	K=-(X+9999.0)*100.+.1	
	FMPR 2,[100.0]
	FADR 2,[0.1]	;FOR ROUND-OFF
	KIFIX 2,2
	MOVE 0,P-1(2)	;CC	PARAM=P(K)   ;AC 0 = PARAM
; GET DATA FROM PARAM K
	MOVE 1,PL-1(2)	;CC	PM=PL(K)
	MOVEM 1,C+=18
	MOVE 1,.COMM.+1	;CC	IF(L.NE.2)RETURN  ;;L=LPAR (CURRENT PARAM#)
	CAIE 1,2	;C L=CALLING PARAM NUM., K=PARAM REFERRED TO.
	JRST PAR2	;GO TO PAR2
	CAIN 2,2	;CC	IF(K.EQ.2)PARAM=PX2
	MOVE 0,C+=21;MUST USE 'UNPROCESSED' FORM OF P2 (I.E. NO 'TEMPO' CHANGES)
PAR2:	MOVEM 2,@1(16)	;SEND BACK VALUE OF K
	JRA 16,2(16)  ;CC	END
	END